package duotai;

public class duotai {
    public static void main(String[] args) {
        //Student s = new Student();
        Person p = new Student();
        p.run(); // 应该打印Person.run还是Student.run?
    }
}
//加上@Override可以让编译器帮助检查是否进行了正确的覆写。希望进行覆写，但是不小心写错了方法签名，编译器会报错。
class Person {
    public void run() {
        System.out.println("Person.run");
    }
    protected String name;
    public String hello(){
        return "Hello,"+name;
    }
}
class Student extends Person {
    @Override
    public void run() {
        System.out.println("Student.run");
    }
    @Override
    ////在子类的覆写方法中，如果要调用父类的被覆写的方法，可以通过super来调用
    public String hello() {
        // 调用父类的hello()方法:
        return super.hello() + "!";
    }
}

//Java的实例方法调用是基于运行时的实际类型的动态调用，而非变量的声明类型。

//在子类的覆写方法中，如果要调用父类的被覆写的方法，可以通过super来调用